package com.vehicle.common.redis.manager;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * Created by yantingbin on 2017/7/1.
 */
public interface CacheManager {
    void init();

    void destroy();

    void del(String key);

    long hincrBy(String key, String field, long value);

    void set(String key, Object value);

    void set(String key, String value);

    void set(String key, Object value, int expireTime);

    void set(byte[] key,byte[] value);

    void set(byte[] key,byte[] value,int expireTime);

    <T> T get(String key, Class<T> tClass);

    byte[] get(byte[] key);

    Object get(String key);

    void hset(String key, String field, String value);

    void hset(String key, String field, Object value);

    <T> T hget(String key, String field, Class<T> tClass);

    void hdel(String key, String field);

    Map<String,String> hgetAll(String key);

    <T> Map<String, T> hgetAll(String key, Class<T> clazz);

    Set<String> hkeys(String key);

    <T> List<T> hmget(String key,Class<T> clazz,String...fields);

    void hmset(String key,Map<String,String> hash,int time);

    void hmset(String key,Map<String,String> hash);

    void zAdd(String key, String value);

    Long zCard(String key);

    void zRem(String key, String value);

    <T> List<T> zrange(String key, int start, int end, Class<T> clazz);

    void lpush(String key, String value);

    void lpush(String key, Object value);

    void rpush(String key, String value);

    void rpush(String key, Object value);

    <T> T lpop(String key,Class<T> clazz);

    <T> T rpop(String key,Class<T> clazz);

    <T> List<T> lrange(String key, int start, int end, Class<T> clazz);

    long llen(String key);

    void lRem(String key,String value);

    void aAdd(String key,String value);

    long sCard(String key);

    void sRem(String key,String value);

    <T> List<T> sScan(String key,Class<T> clazz,int start);

    List<String> getAllKeys(String key);
}
